计算机网络-数据链路层


1. 数据链路层的基本概念

  • 结点:主机或者路由器
  • 链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路和无线链路。一条无源的点到点的物理线路段,中间没有任何其他的交换结点,一条链路只是一条通路的一个部分。
  • 数据链路:网络中两个结点之间的逻辑通道,把视线控制数据传输协议的硬件和软件加到链路上就构成了数据链路

  • :链路层的协议数据单元,封装网络层数据报

数据链路层:负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传输数据报。它把网络层交下来的数据封装成帧发送到链路上,以及把接收到的帧中的数据取出来并且上交到网络层。

在因特网中,网络层协议数据单元就是IP数据报(或简称为数据报或者包)。数据链路层封装的帧,在物理层编程数字信号链路上传输。

数据链路层的信道类型

  • 点对点通信:使用一对一的点对点的通信方式
  • 广播信道:使用一对多的广播通信方式,必须使用专用的共享信道协议来协调这些主机的数据发送

2. 数据链路层的三个基本功能

2.1 封装成帧

封装成帧:就是将在网络层的IP数据报的前后分别添加其首部尾部,这样就构成了一个帧

  • 不同的数据链路层协议的帧的首部和尾部包含的信息有明确的规则,帧的首部和尾部有帧开始符合帧结束符。这些符号称为帧定界符
  • 接收端收到物理层传过来的数字信号,读取到帧开始字符一直到帧结束字符,这样就认为接收到了一个完整的帧
  • 在数据传输中出现查错的时候,帧定界符的作用就会更加明显
  • 每一种数据链路层协议都规定了所能传送的帧的数据部分长度的上限
  • 也就是最大传输单元MTU(Maximum Transfer Unit),以太网的MTU是1500个字节

2.2 透明传输

帧开始符和帧结束符最好是不会出现在帧的数据部分的字符

通常我们电脑键盘能够输入的字符是ASCII代码表中打印的字符,在ASCII字符代码表中,还有非打印控制字符,在非打印控制字符中有两个字符专门用来做帧定界符,代码SOH(start Of Header)作为帧开始定界符,对应的二进制编码为0000 0001,代码EOT(End Of Transmission)作为帧结束定界符

如下图所示,当数据部分是非ASCII字符代码表的文本文件的时候(比如二进制代码的计算机程序或者图像),情况就不同了。如果数据中的某一段二进制代码正好和SOH或者EOT帧定界符编码一样,接收端就会误认为这就是帧的边界。

解决办法是字符填充法,也就是为特殊字符的附近进行字节填充。

注意:字节填充这个事情是数据链路层做的

2.3 差错检验

现实中的通信链路都不会是理想的,这就是说,比特在传输过程可能会产生差错。

为了保证数据传输的可靠性,在计算机网络传输数据的时候,必须采用各种差错检测措施,目前在数据链路层广泛使用了循环冗余检验CRC的差错检验技术

要想让接收端能够判断帧在传输过程是否出现差错,这就需要在传输帧中包含用于检测错误的信息,这部分信息就被称为帧校验序列FCS,注意,FCS检验的是数据报和帧首部的数据是否有差错。

  • 除数:只要发送端和接收端都使用一个除数即可,可以自行选择

  • 同时要注意,数据报补全数据的选择是,在后边加上(除数的位数-1)位的零

3. 点到点信道数据链路层

点到点信道是指一条链路上就一个发送端和接收端的信道,通常用在广域网的链路

3.1 PPP协议的特点

  • 简单:不提供可靠传输,有错误则直接丢失而不是纠正
  • 封装成帧:封装帧的首部和帧尾部,关键是帧开始符和帧结束符
  • 透明传输:如果传输的数据里面有帧定界符,则会在传输的时候进行转移,在接收后取出
  • 差错检测:CRC计算FCS
  • 支持多种网络层协议:支持ipv4,ipv6等网络层协议
  • 多种类型链路(物理意义):光纤、铜线、同步、异步、串行、并行
  • 检测链接状态
  • 最大传送单元
  • 网络层地址协商
  • 数据压缩协商

3.2 PPP协议的组成

在广域网中通常使用串行,短距离使用并行

  • HDLC:负责将数据封装成能够在串行电路上传输的协议

  • LCP:建立连接、协商参数(链路控制协议)

  • NCP:标识多种网络协议(网络控制协议)

3.3 PPP协议帧的格式

  • 首部:4个字段
    • 标志字段F:连续两帧之间只需要用一个标志字段
    • 地址字段A:0xFF实际上不起作用
    • 控制字段C:通常设置为0x03
    • 协议字段
  • 尾部:两个字段

3.4 同步传输和异步传输(透明传输)

同步(synchronous Transmission)传输:以数据帧为单位传输数据,可以采用字符形式或者位组合的形式帧同步信号。在短距离的高速传输中,该时钟信号可以由专门的时钟线路来传输,由发送端或者接收端提供专用于同步的时钟信号。计算机网络采用同步传输方式时,常将时钟同步信号(前同步码)植入数据帧中,以实现接收端和发送端的时钟同步。以比特为单位进行传输

实际上读取同步码的过程就是一个获取码元边界的过程,避免读取的码元不完整。

异步(Asynchronous Transmission)传输:以字符为单位传输数据,发送端和接收端具有独立的时钟(频率不能够差太多),并且两者中任一方都不向对象提供时钟同步信号,以字节为单位进行传输

  • 异步传输使用字节填充

在异步传输的链路上,数据传输以字节为单位,PPP帧的转义符定义为0X7D,使用字节填充,如图

  • 同步传输使用0比特填充

在同步传输的链路上,数据传输以帧为单位,PPP协议使用零比特填的方法来实现透明传输。大家把PPP协议定界符0x7E写成二进制的0111 1110,可以看到中间有连续的6个1,只要想办法在数据部分不要出现连续的6个1,就肯定不会出现这种界定符,具体的办法就是0比特填充。

3.5 PPP协议的工作状态

PPP链路初始化状态:

用户拨号接入ISP后,就建立了一条从用户个人电脑到ISP的物理连接

用户个人电脑向ISP发送一系列的链路控制协议LCP分组,封装成多个PPP帧,以便建立LCP连接

之后进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配一个临时的IP地址

当用户通信完毕后,NCP释放网络层连接,收回原来分配出去的地址。LCP释放数据链路层的连接,最后释放物理层连接

4. 广播信道的数据链路层

4.1 局域网结构

4.2 带冲突检测的载波侦听多路访问技术(CSMA/CD)

使用CSMA/CD协议的网络就是以太网。点到点链路就不用冲突检测,因此不需要使用CSMA/CD,与之对应的,每个设备都需要有MAC

以太网的标准:以太网是一种计算机局域网技术。它给出了以太网介质访问控制协议(CSMA/CD)以及物理层技术规范

总线型网络使用CSMA/CD协议进行通信,即带冲突检测的载波侦听多路访问技术

  • 即便检测出总线上没有信号,开始发送数据后也有可能和迎面而来的信号在链路上发生碰撞

  • 为了能够检测到正在发送的帧在总线上是否产生冲突,以太网的帧不能够太短,如果太短就有可能检测不到自己发送的帧产生了冲突。

如果帧太短,那么就无法感知到是否发生了碰撞,也就是说发生了碰撞后,信号继续在线路上传输,而设备之间无法感知到这次碰撞,依然在接收碰撞产生的数据,碰撞回传的信号依然在路上,当碰撞回传的信号回来的时候,计算机A认为在整个发送过程中,整个数据包都送出去了,都没有发生碰撞,那就是发送成功了,后来传回来的这个信号,他认为是其他设备发生的碰撞,这样就导致了错误发生。

如何避免这个问题呢?

挑选一个合适的帧长度,这个帧长度能够确保在回收到碰撞信号的时候,设备依然在发送数据。

  • 解决冲突的方法:退避算法

总线型网络中的计算机数量越多,在链路上发送数据产生冲突的可能性就越大

  • 以太网的帧格式

常用的以太网MAC帧格式有两种标准,一种是EthernetV2标准(也就是以太网V2标准),另一种是IEEE的802.3标准,使用得最多的是以太网V2的MAC帧格式

前两个字段分别是目标MAC地址和源MAC地址

第三个字段是类型字段

最小帧是64个字节。如果数据字段的长度小于46个字节的时候,数据链路层就会在数据字段的后面加入一个整数字节的填充字段,以保证以太网的MAC帧长不小于64个字节,接收端还必须能够将添加的字节给去掉

  • 以太网信道利用率

利用率是指发送数据的时间占整个时间的比例。

如图所示,平均发送一帧所需要的时间,经历了n倍的争用期,T0为发送该帧所需的时间,τ为该帧的传播时延

$$S = \frac{T_{0}}{n2τ+t0+τ }$$

从公式可以看出,要想提高信道利用率,最好的情况下是不发生冲突,也就是n=0,这种情况算出来的信道利用率就是极限信道利用率

$$S_{max} = \frac{T_0}{T_0+τ} = \frac{1}{1+\frac{τ}{T_0}}$$

要想提高极限信道利用率,就要降低公式中

$$\frac{τ}{T_0}$$

τ值和以太网连线的长度有关,这就以太网网线的长度就不能太长。

一定情况下的T0和帧的长度有关,这就意味着以太网的帧不能太短

4.3 以太网的MAC层

硬件地址又称为物理地址,或者MAC地址,这种48位的地址应当是某个接口的标识符

IEEE注册管理机构RA负责向厂商指派前3个字节,后面3个字节由厂家自行指派,称为扩展标识符

  • 网卡的作用

网卡是工作在链路层和物理层的网络组件,是局域网中连接计算机和传输截止的接口。

不仅能实现与局域网传输截止之间的物理连接和电信号的匹配,还涉及帧的发送与接收,帧的封装与拆封,帧的查错校验,介质访问控制等(以太网使用CSMA/CD协议)、数据的编码与解码以及数据缓存的功能

  • 单站地址,组地址,广播地址

IEEE规定地址字段的第1字节的最低位是I/G

单站地址I/G=0

组地址I/G=1,组地址用来进行多播

广播地址:所有48位都为1,只能作为目的地址来使用

IEEE 把地址字段第 1 字节的最低第 2 位规定为 G/L (Global / Local) 位。

全球管理:G/L 位 = 0。厂商向 IEEE 购买的 OUI 都属于全球管理。

本地管理:G/L 位 = 1。 这时用户可任意分配网络上的地址。

适配器具有过滤功能

每收到一个MAC帧,先用硬件检查帧中的MAC地址

如果是发往本站的则收下,否则就将此帧丢弃

4.4 扩展的以太网

  • 集线器

传统以太网最初是使用同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和灵活的双绞线

集线器和网卡一样工作在物理层

可以将多个集线器连接在一起形成一个更大的以太网,这不仅可以扩大以太网中计算机的数量,还可以扩展以太网中计算机的数量,还可以扩展以太网的覆盖范围,使用主干集线器连接教室中的集线器,形成一个大的以太网。

碰撞域:称为冲突域,指网络中一个站点发出的帧会与其他站点发出的帧产生碰撞或者冲突的那部分网络

  • 使用网桥优化以太网

网桥能够基于MAC地址表,查找转发端口,从而减少了碰撞域

  • 网桥自动构建MAC表

使用网桥优化以太网,对于网络中的计算机是没有感觉的,也就是说以太网中的计算机是不知道网络中有网桥存在的,也不需要网络管理员配置网桥的MAC地址表,因此我们称网桥是透明桥接

网桥接入以太网的时候,MAC地址表示为空,网桥会在计算机通信的过程中自动构建MAC地址表,这种称为自学习

  • 自学习

网桥的接口收到一个帧,就要检查MAC地址表中收到的帧源MAC地址有无匹配的项目,如果没有匹配的项目,就在MAC地址表中添加该接口和该帧的源MAC地址对应关系以及进入接口的时间,如果有,则把原有的项目进行更新

  • 转发帧

网桥接口收到一个帧,就检查地址表中有没有该帧目标MAC地址对应的端口,如果有,就会将该帧转发到对应的端口,如果没有,则会将该帧广播到全部端口,除了它自己

这里推荐一个视频

https://www.bilibili.com/video/BV1Ea411V7gu/?is_story_h5=false&p=1&share_from=ugc&share_medium=android&share_plat=android&share_session_id=f69963b4-a543-4f8c-af3a-4652dae845c9&share_source=WEIXIN&share_tag=s_i&timestamp=1664757459&unique_k=Hs7Qryh

广播域(broadcast domain :指这样一部分网络,其中任何一台设备发出的广播通信都能被该部分网络中的所有其他设备所接收。

  • 多接口的网桥

5. 虚拟局域网

5.1 传统以太网存在的问题

以太网存在的主要问题主要有:广播风暴、安全问题、管理困难

当以太网中形成冗余链路(回路)的时候就会形成广播风暴

交换机每个接口都处于一个独立的碰撞域中,但所有计算机都处于一个广播域中,指的是交换机互相直连的情况下,这种情况无法隔离不同部门的通信

可以利用生成树协议解决上面的问题

  • 生成树协议STP(Spanning Tree Protocol):不改变网络的实际拓扑结构,但是在逻辑上切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构。

5.2 虚拟局域网简介

虚拟局域网其实只是局域网用户提供的一种服务,并不是一种新型的局域网

这每个虚拟局域网都是一个广播域,例如 VLAN1,VLAN2,VLAN3是三个不同的广播域

  • 当B1向VLA12工作内成员发送数据的时候,工作站B2、B3将会收到其广播的信息

B1发送数据的时候,VLAN1和VLAN3组内成员都不会收到广播消息

虚拟局域网限制了接收广播信息的工作站的数目,使得网络不会因为传播过多的广播信息(“广播风暴”)而引起性能的恶化

5.3 划分虚拟局域网的方法

  • 基于交换机端口的方法

最简单,也是最常用的方法

属于在第1层划分虚拟局域网的方法,其缺点是不允许用户进行移动

  • 基于计算机网卡的MAC地址的方法

根据用户计算机的MAC地址划分虚拟局域网

属于在第2层划分虚拟局域网的方法

允许用户进行移动

其缺点是需要输入和管理大量的MAC地址,如果用户的MAC地址改变了,那么就需要管理员重新配置VLAN

  • 基于协议类型的方法

根据以太网帧的第三个字段”类型”确定该类型的协议属于哪一个虚拟局域网

  • 基于子网IP地址的方法

根据以太网帧的第三个字段”类型”和IP分组首部中的源IP地址字段确定该IP分组属于哪一个虚拟局域网

  • 基于高层服务的方法

根据高层应用的服务、或者它们的组合划分虚拟局域网

5.4 虚拟局域网使用的以太网帧格式

6. 高速以太网

6.1 100M以太网

  • 100BASE-T是在双绞线上传送100Mb/s系基带信号的星型拓扑的以太网,使用的是CSMA/CD协议,它又称为快速以太网

  • 使用交换机组建的100BASE-T以太网,可以在全双工的方式下工作而无冲突发生。因此CSMA/CD协议对于基于交换机组建的以太网是不起作用的。因为其帧格式和以太网一样,因此称交换机组件的网络为以太网。

  • 以太网的最短帧的带框和链路长度有关,100M以太网比10M以太网速率提高了10倍,要想和10M以太网兼容,就要确保最短帧也是64字节,那就将电缆最大长度由1000M降到100m,因此以太网的争用期依然是5.12us。最短帧依然是64字节

6.2 吉比特以太网

  • 允许在1Gbits/s下以全双工和半双工2种方式进行工作
  • 使用 IEEE 802.3 协议规定的 MAC 帧格式。
  • 在半双工方式下使用 CSMA/CD 协议,而在全双工方式不使用 CSMA/CD 协议。
  • 与 10BASE-T 和 100BASE-T 技术向后兼容。

半双工方式工作的吉比特以太网

半双工时采用 CSMA/CD,必须进行碰撞检测。

为保持64字节最小帧,以及100米网段的最大长度,增加了2个功能

  • 载波延迟:将争用时间增 b 大为 512 字节。凡发送的 MAC 帧长不足 512 字节时,就用一些特殊字符填充在帧的后面。

  • 分组延迟

当很多短帧发送时,第一个短帧采用载波延伸的方法进行填充,随后一些短帧可一个接一个地发送,只需要留有必要的帧间最小间隔即可。这样就形成一串分组的突发,直到达到1500字节或者稍多一些

全双工方式工作的吉比特以太网不使用载波延伸和分组突发

它只工作在全双工模式下,因此不存在争用的问题,也不使用CDMA/CD协议。

6.3 端到端的以太网传输

以太网的工作范围已经扩大到了城域网和广域网,实现了端到端的以太网传输

6.4 使用以太网进行宽带的接入

以太网宽带接入具有以下特点:

  • 可以提供双向的宽带通信。
  • 可以根据用户对带宽的需求灵活地进行带宽升级。
  • 可以实现端到端的以太网传输,中间不需要再进行帧格式的转换。
  • 但不支持用户身份鉴别。

7. 练习题

3-07

要发送的数据为1101011011。采用CRC的生成多项式是P(X)=X4+X+1。试求应添加在数据后面的余数。数据在传输过程中最后一个1变成了0,问接收端能否发现?若数据在传输过程中最后两个1都变成了0,问接收端能否发现?采用CRC检验后,数据链路层的传输是否就变成了可靠的传输?

这道题考察的CRC冗余检测技术的应用。解题步骤如下:

  • 求除数:首先由CRC的生成多项式P(X) = X4+X+1,那么以多项式表示出来就是1*X^4+0*X^3+0*X^2+1*X^1+1*X^0,用位表示出来就是10011,这个的话就是除数

  • 求被除数:注意到除数具有5位,则被除数需要向左移(5-1)位,也就是加四个0,那么被除数就是1101 0110 1100 00

  • 开始运算除法,用被除数除于除数,计算方法是每个位做异或,不足5位的要将被除数上的数拉下来补足。

  • 计算得余数为1110,这个余数应该添加到数据的后面。

  • 开始模拟,当数据最后一位1变成0之后,那么除数就变成了1101 0110 10 1110,同理计算得到其余数为011,不为0,是可以发现的

  • 当数据最后两位1都变成0之后,那么除数就变成了1101 0110 00 1110,计算得到其余数为101,其余数不为0,可以发现


文章作者: 穿山甲
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 穿山甲 !
  目录